package com.wd.attend.mapper;

import java.util.List;

import com.wd.attend.domain.StaffInfo;
import com.wd.system.domain.SysUser;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

/**
 * 员工信息Mapper接口
 *
 * @author liumingkun
 * @date 2023-11-08
 */
@Mapper
@Repository
public interface StaffInfoMapper {
    /**
     * 查询员工信息
     *
     * @param staffId 员工信息主键
     * @return 员工信息
     */
    StaffInfo selectStaffInfoByStaffId(Long staffId);


    /***
     * 查询已分配考勤分组的员工信息列表
     * @param staffInfo 员工信息
     * @return 员工信息
     */
    List<StaffInfo> selectAllocatedGroupList(StaffInfo staffInfo);

    /***
     * 查询未分配考勤分组的员工信息列表
     * @param staffInfo 员工信息
     * @return 员工信息
     */
    List<StaffInfo> selectUnAllocatedGroupList(StaffInfo staffInfo);

    /**
     * 查询员工信息列表
     *
     * @param staffInfo 员工信息
     * @return 员工信息集合
     */
    List<StaffInfo> selectStaffInfoList(StaffInfo staffInfo);


    /**
     * 移除员工的考勤班组信息
     *
     * @param staffInfo 员工信息
     * @return 结果
     */
    int staffGroupCancel(StaffInfo staffInfo);

    /**
     * 新增员工信息
     *
     * @param staffInfo 员工信息
     * @return 结果
     */
    int insertStaffInfo(StaffInfo staffInfo);

    /**
     * 修改员工信息
     *
     * @param staffInfo 员工信息
     * @return 结果
     */
    int updateStaffInfo(StaffInfo staffInfo);

    /**
     * 删除员工信息
     *
     * @param staffId 员工信息主键
     * @return 结果
     */
    int deleteStaffInfoByStaffId(Long staffId);

    /**
     * 批量删除员工信息
     *
     * @param staffIds 需要删除的数据主键集合
     * @return 结果
     */
    int deleteStaffInfoByStaffIds(Long[] staffIds);


    /**
     * 考勤班组中批量移除员工
     *
     * @param staffIds 需要删除的数据主键集合
     * @return 结果
     */
    int cancelAllStaffGroup(Long[] staffIds);


    /**
     * 批量将员工添加到考勤组
     *
     * @param groupId  考勤分组Id
     * @param staffIds 员工信息主键
     * @return 结果
     */
    int authStaffSelectAll(@Param("groupId") Long groupId, @Param("staffIds") Long[] staffIds);

}
